/* Copyright (c) [2020] [ylc]. Licensed under Apache-2.0 License. */

#include "my_define.h"

/*********************************   寄存器   *******************************/
//SDA P27
//SCL P17
//硬件接口
static void i2c_IoInit(void){
	//io初始化输出高，外部电路上拉，内部则不需要上拉
	P1CON |= (1<<7);
	P2CON |= (1<<7);
	P1PH&= ~(1<<7);
	P2PH&= ~(1<<7);
	P17=1;	//SCL
	P27=1;	//SDA
}

static void i2c_Delay(void){
	u16 i;
	for(i=0;i<10;i++){
		__NOP();
	}
}

static void i2c_SdaH(void){
	P2CON &=~(1<<7);
	P27=1;
}

static void i2c_SdaL(void){
	P2CON |= (1<<7);
	P27=0;
}

static void i2c_SclH(void){
	P1CON &=~(1<<7);
	P17=1;
}

static void i2c_SclL(void){
	P1CON |= (1<<7);
	P17=0;
}

static u8 i2c_ReadSda(void){
	return P27;
}

static u8 i2c_ReadScl(void){
	return P17;
}


/*********************************   库函数   *******************************/
//SDA P20
//SCL P05
static void i2c_IoInit(void){
	//io初始化输出高，外部电路上拉，内部则不需要上拉
	GPIO_Init(GPIO2, GPIO_PIN_0,GPIO_MODE_OUT_PP);
	GPIO_Init(GPIO0, GPIO_PIN_5,GPIO_MODE_OUT_PP);
    GPIO_WriteHigh(GPIO2, GPIO_PIN_0);
	GPIO_WriteHigh(GPIO0, GPIO_PIN_5);
}

static void i2c_Delay(void){
	u16 i;
	for(i=0;i<10;i++){
		__NOP();
	}
}

static void i2c_SdaH(void){
	GPIO_Init(GPIO2,GPIO_PIN_0,GPIO_MODE_IN_HI);
	GPIO_WriteHigh(GPIO2,GPIO_PIN_0);
}

static void i2c_SdaL(void){
	GPIO_Init(GPIO2, GPIO_PIN_0,GPIO_MODE_OUT_PP);
	GPIO_WriteLow(GPIO2,GPIO_PIN_0);
}

static void i2c_SclH(void){
	GPIO_Init(GPIO0,GPIO_PIN_5,GPIO_MODE_IN_HI);
	GPIO_WriteHigh(GPIO0,GPIO_PIN_5);
}

static void i2c_SclL(void){
	GPIO_Init(GPIO0,GPIO_PIN_5,GPIO_MODE_OUT_PP);
	GPIO_WriteLow(GPIO0,GPIO_PIN_5);
}

static u8 i2c_ReadSda(void){
	return GPIO_ReadPin(GPIO2,GPIO_PIN_0);
}

static u8 i2c_ReadScl(void){
	return GPIO_ReadPin(GPIO0,GPIO_PIN_5);
}
